/*
 * test_report.c

 *
 *  Created on: 03/05/2013
 *      Author: jose
 */


#include <stdio.h>
#include <libxml/parser.h>
#include <libxml/tree.h>
#include "../tests.h"




/*
 * Probar con el archivo access.xml
 * Debe cargar correctamente el archivo al árbol XML
 */
void
test_parse_access_tree(const char * filename)
{
	xmlNode * root = NULL;
	xmlDoc * doc = NULL;
	Access * a = NULL;

	a = access_create(1);

	/* Leer archivo y cargar al arbol XML */
	/* leer archivo xml */
    doc = xmlReadFile(filename, NULL, 0);
    if (!doc)
    {
        error_message(__FILE__, __FUNCTION__, __LINE__, "Error al abrir el archivo XML");
        return;
    }

    root = xmlDocGetRootElement(doc);
    if (!root)
    {
        error_message(__FILE__, __FUNCTION__, __LINE__, "No se pudo obtener la raíz");
        return;
    }

    parse_access_tree(root, a);
}


/*
 * Probar con el archivo access.xml
 * a puntero nulo, debe saltar assert
 */
void
test_parse_access_tree2(const char * filename)
{
	xmlNode * root = NULL;
	xmlDoc * doc = NULL;
	Access * a = NULL;

	/* Leer archivo y cargar al arbol XML */
	/* leer archivo xml */
    doc = xmlReadFile(filename, NULL, 0);
    if (!doc)
    {
        error_message(__FILE__, __FUNCTION__, __LINE__, "Error al abrir el archivo XML");
        return;
    }

    root = xmlDocGetRootElement(doc);
    if (!root)
    {
        error_message(__FILE__, __FUNCTION__, __LINE__, "No se pudo obtener la raíz");
        return;
    }

    parse_access_tree(root, a);
}


/*
 * Probar con el archivo access.xml
 * root puntero nulo, debe saltar assert
 */
void
test_parse_access_tree3(const char * filename)
{
	xmlNode * root = NULL;
	xmlDoc * doc = NULL;
	Access * a = NULL;

	a = access_create(1);

	/* Leer archivo y cargar al arbol XML */
	/* leer archivo xml */
    doc = xmlReadFile(filename, NULL, 0);
    if (!doc)
    {
        error_message(__FILE__, __FUNCTION__, __LINE__, "Error al abrir el archivo XML");
        return;
    }

    parse_access_tree(root, a);
}


/*
 * Probar con el archivo access2.xml
 * Debe cargar correctamente el archivo al árbol XML
 */
void
test_parse_session_tree(const char * filename)
{
	xmlNode * root = NULL;
	xmlDoc * doc = NULL;
	Session * s = NULL;

	s = session_create(1);

	/* Leer archivo y cargar al arbol XML */
	/* leer archivo xml */
    doc = xmlReadFile(filename, NULL, 0);
    if (!doc)
    {
        error_message(__FILE__, __FUNCTION__, __LINE__, "Error al abrir el archivo XML");
        return;
    }

    root = xmlDocGetRootElement(doc);
    if (!root)
    {
        error_message(__FILE__, __FUNCTION__, __LINE__, "No se pudo obtener la raíz");
        return;
    }

    parse_session_tree(root, s);

    print_xml_tree(root, 0);
}


/*
 * Probar con el archivo access2.xml
 * s puntero nulo, debe saltar assert
 */
void
test_parse_session_tree2(const char * filename)
{
	xmlNode * root = NULL;
	xmlDoc * doc = NULL;
	Session * s = NULL;

	/* Leer archivo y cargar al arbol XML */
	/* leer archivo xml */
    doc = xmlReadFile(filename, NULL, 0);
    if (!doc)
    {
        error_message(__FILE__, __FUNCTION__, __LINE__, "Error al abrir el archivo XML");
        return;
    }

    root = xmlDocGetRootElement(doc);
    if (!root)
    {
        error_message(__FILE__, __FUNCTION__, __LINE__, "No se pudo obtener la raíz");
        return;
    }

    parse_session_tree(root, s);

    print_xml_tree(root, 0);
}


/*
 * Probar con el archivo access2.xml
 * root puntero nulo, debe saltar assert
 */
void
test_parse_session_tree3(const char * filename)
{
	xmlNode * root = NULL;
	xmlDoc * doc = NULL;
	Session * s = NULL;

	s = session_create(1);

	/* Leer archivo y cargar al arbol XML */
	/* leer archivo xml */
    doc = xmlReadFile(filename, NULL, 0);
    if (!doc)
    {
        error_message(__FILE__, __FUNCTION__, __LINE__, "Error al abrir el archivo XML");
        return;
    }

    parse_session_tree(root, s);

    print_xml_tree(root, 0);
}




/*
 * Probar con el archivo access3.xml
 * Debe cargar correctamente el archivo al árbol XML
 */
void
test_parse_sessions_tree(const char * filename)
{
	xmlNode * root = NULL;
	xmlDoc * doc = NULL;
	Sessions * s = NULL;

	s = sessions_create();

	/* Leer archivo y cargar al arbol XML */
	/* leer archivo xml */
    doc = xmlReadFile(filename, NULL, 0);
    if (!doc)
    {
        error_message(__FILE__, __FUNCTION__, __LINE__, "Error al abrir el archivo XML");
        return;
    }

    root = xmlDocGetRootElement(doc);
    if (!root)
    {
        error_message(__FILE__, __FUNCTION__, __LINE__, "No se pudo obtener la raíz");
        return;
    }

    parse_sessions_tree(root, s);

    print_xml_tree(root, 0);
}
